import gulpError from './utils/gulpError';
const { checkLoginStatus } = require('./utils/api.js');
const { initPerformanceMonitor } = require('./utils/performance-monitor.js');

App({
  onLaunch() {
    
    // 初始化性能监控
    initPerformanceMonitor();
    
    this.checkTokenOnLaunch();
  },

  onShow() {
    if (gulpError !== 'gulpErrorPlaceHolder') {
      wx.redirectTo({
        url: `/pages/gulp-error/index?gulpError=${gulpError}`,
      });
      return;
    }
    
    // 每次显示时检查token状态
    this.checkTokenOnShow();
  },
  
  /**
   * 启动时检查token
   */
  checkTokenOnLaunch() {
    try {
      const token = wx.getStorageSync('token');
      const userInfo = wx.getStorageSync('userInfo');
      
      if (token && userInfo && userInfo.loginTime) {
        // 检查token是否超过7天（可配置）
        const currentTime = new Date().getTime();
        const loginTime = userInfo.loginTime;
        const tokenExpireDays = 7; // token过期天数
        const expireTime = tokenExpireDays * 24 * 60 * 60 * 1000; // 7天的毫秒数
        
        if (currentTime - loginTime > expireTime) {
          // Token已超过有效期，自动清理
          this.handleTokenExpiredOnStartup('Token已过期，请重新登录');
        }
      }
    } catch (error) {
      // 静默处理错误
    }
  },
  
  /**
   * 显示时检查token状态
   */
  checkTokenOnShow() {
    try {
      // 检查当前页面是否为登录页面
      const pages = getCurrentPages();
      const currentPage = pages[pages.length - 1];
      
      if (currentPage && currentPage.route === 'pages/login/login') {
        return; // 如果已经在登录页面，不需要检查
      }
      
      // 检查登录状态
      if (!checkLoginStatus()) {
        // 检测到未登录状态，跳转到登录页
        wx.reLaunch({
          url: '/pages/login/login'
        });
      }
    } catch (error) {
      // 静默处理错误
    }
  },
  
  /**
   * 启动时处理token过期
   */
  handleTokenExpiredOnStartup(message) {
    wx.removeStorageSync('token');
    wx.removeStorageSync('userInfo');
    
    // 显示提示并跳转到登录页
    setTimeout(() => {
      wx.showToast({
        title: message,
        icon: 'none',
        duration: 2000
      });
      
      wx.reLaunch({
        url: '/pages/login/login'
      });
    }, 500);
  }
});